package com.jiuyue.threads;
/**
 * 

* <p>Title: java多线程</p>  

* <p>Description: </p>  

* @author Jiuyue

* @date 2021年7月5日
 */
public class ThreadsController {
	
	
	/**
	 * 在 Java 中实现多线程有两种手段，一种是继承 Thread 类，另一种就是实现 Runnable 接口。下面我们就分别来介绍这两种方式的使用。
	 * 从 Thread 类的定义可以清楚的发现，Thread 类也是 Runnable 接口的子类，但在Thread类中并没有完全实现 Runnable 接口中的 run() 方法，
	 * 下面是 Thread 类的部分定义。
	 * 从定义中可以发现，在 Thread 类中的 run() 方法调用的是 Runnable 接口中的 run() 方法，也就是说此方法是由 Runnable 子类完成的，
	 * 所以如果要通过继承 Thread 类实现多线程，则必须覆写 run()。
	 * 	实际上 Thread 类和 Runnable 接口之间在使用上也是有区别的，如果一个类继承 Thread类，则不适合于多个线程共享资源，而实现了 Runnable 接口，
	 * 就可以方便的实现资源的共享。
	 * 要想实现多线程，必须在主线程中创建新的线程对象。任何线程一般具有5种状态，即     创建，就绪，运行，阻塞，终止。
	 * 在此提出一个问题，Java 程序每次运行至少启动几个线程？
	 * 至少启动两个线程，每当使用 Java 命令执行一个类时，实际上都会启动一个 JVM，每一个JVM实际上就是在操作系统中启动一个线程，
	 * Java 本身具备了垃圾的收集机制。所以在 Java 运行时至少会启动两个线程，一个是 main 线程，另外一个是垃圾收集线程。

	 * 
	 * 
	 * 
	 * 
	 * 
	 * 
	 * 
	 * 
	 * 
	 * 
	 * 
	 * 
	 * 
	 * 
	 * 
	 */

}
